/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cf.dao.impl;

import com.cf.modelo.EjercicioBean;
import com.cf.modelo.TbEjercicio;
import com.cf.modelo.*;
import com.cf.util.HibernateUtil;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author Soltecn2
 */
@Service
@Transactional
public class TbEjercicioDaoImpl {

    public static List<EjercicioBean> listEjercicio(String descripcion) {
        List<EjercicioBean> lst = new ArrayList<EjercicioBean>();

        try {
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            String qury="select f.id.codigo , e.codigo,e.descripcion,c.descripcion,s.descripcion,t.descripcion,e.dificultad from TbEjercicio e ,TbEjerciciocf f,TbTarea t ,TbSubcategoria s ,TbCategoria c where e.codigo = f.tbEjercicio and f.tbTarea = t.codigo and t.tbSubcategoria = s.codigo and s.tbCategoria = c.codigo  and e.descripcion LIKE :desc";
            Query sqlquery = session.createQuery(qury).setString("desc", "%" + descripcion+ "%");
            List<Object[]> l = sqlquery.list();

            for (int i = 0; i < l.size(); i++) {
                EjercicioBean s = new EjercicioBean();
                s.setCodigo(Integer.parseInt(l.get(i)[0].toString()));
                s.setCodigoEjer(Integer.parseInt(l.get(i)[1].toString()));
                s.setDescripcionEjer(l.get(i)[2].toString());
                s.setDescCategoria(l.get(i)[3].toString());
                s.setDescSubCategoria(l.get(i)[4].toString());
                s.setDesctarea(l.get(i)[5].toString());
                if(Integer.parseInt(l.get(i)[6].toString())==1){
                 s.setDificultad("Alta");
                }else if(Integer.parseInt(l.get(i)[6].toString())==2){
                 s.setDificultad("Media");
                }else if(Integer.parseInt(l.get(i)[6].toString())==3){
                 s.setDificultad("Baja");
                }
               
                lst.add(s);

            }

        } catch (Exception e) {
            e.getMessage();
        }
        return lst;



    }

    public static void Save(TbEjerciciocf ejerciciocf) {
        //System.out.println("Resultado ------- " + ejerciciocf.getId().toString() + ""+ ejerciciocf.getTbTarea().toString() + "");
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
      
        session.save(ejerciciocf);
        session.getTransaction().commit();
        
    }
    

      public Boolean grabarejercicio(int codigoDet,int codigoEjer,int codTarea,int codPlantilla,String descripcion,String enunciado,int dificultad){
 
    
        try {
               Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Connection connection = session.connection();
        
        String sql = "{ call entrenamiento.inserta_ejercicio(" +codigoDet+ " , "+codigoEjer+" , "+codTarea+" , "+codPlantilla+" , '"+descripcion+"' , '"+enunciado+"' , "+dificultad+"  )}";
        CallableStatement prepareCall = connection.prepareCall(sql);
       prepareCall.execute();
        prepareCall.close();
        session.getTransaction().commit();  
        } catch (Exception e) {
            System.out.println("Error al eliminar: " +e.getMessage());
            return false;
        }
        return true;
    }
      
      
      
      
      
      
      
      
 public static List<EjercicioBean> listEjercicioModificar(int codigo) {
        List<EjercicioBean> lst = new ArrayList<EjercicioBean>();

        try {
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            String qury="select f.id.codigo , e.codigo,e.descripcion,c.descripcion,s.descripcion,t.descripcion,e.dificultad,e.enunciado,pl.codigo from TbEjercicio e ,TbEjerciciocf f,TbTarea t ,TbSubcategoria s ,TbCategoria c ,TbPlantilla pl where e.codigo = f.tbEjercicio and f.tbTarea = t.codigo and t.tbSubcategoria = s.codigo and s.tbCategoria = c.codigo and f.tbPlantilla=pl.codigo  and e.codigo="+codigo;
            Query sqlquery = session.createQuery(qury);
            List<Object[]> l = sqlquery.list();

            for (int i = 0; i < l.size(); i++) {
                EjercicioBean s = new EjercicioBean();
                s.setCodigo(Integer.parseInt(l.get(i)[0].toString()));
                s.setCodigoEjer(Integer.parseInt(l.get(i)[1].toString()));
                s.setDescripcionEjer(l.get(i)[2].toString());
                s.setDescCategoria(l.get(i)[3].toString());
                s.setDescSubCategoria(l.get(i)[4].toString());
                s.setDesctarea(l.get(i)[5].toString());
                if(Integer.parseInt(l.get(i)[6].toString())==1){
                 s.setDificultad("Alta");
                }else if(Integer.parseInt(l.get(i)[6].toString())==2){
                 s.setDificultad("Media");
                }else if(Integer.parseInt(l.get(i)[6].toString())==3){
                 s.setDificultad("Baja");
                }
                s.setEnunciado(l.get(i)[7].toString());  
                s.setIdPlantilla(Integer.parseInt(l.get(i)[8].toString()));
                lst.add(s);

            }

        } catch (Exception e) {
            e.getMessage();
        }
        return lst;



    }     
      
      
      
      
      
 
    
}
